<template>

	<div class="user">
		<!--搜索表单-->
		<div class="common-seach-wrap">
			<el-form size="small" :inline="true" :model="formInline" class="demo-form-inline">
				<el-form-item label="昵称/手机号">
					<el-input v-model="formInline.nickname" placeholder="请输入昵称/手机号"></el-input>
				</el-form-item>
				<el-form-item label="会员等级">
					<el-select v-model="formInline.gradeId" placeholder="请选择">
						<el-option label="全部" value="0"></el-option>
						<el-option v-for="(item, index) in gradeList" :key="index" :label="item.name"
							:value="item.gradeId">
						</el-option>
					</el-select>
				</el-form-item>
				<el-form-item label="注册时间">
					<div class="block">
						<span class="demonstration"></span>
						<el-date-picker v-model="formInline.startDate" type="date" value-format="YYYY-MM-DD"
							placeholder="选择开始日期">
						</el-date-picker>
						<span>-</span>
						<el-date-picker v-model="formInline.endDate" type="date" value-format="YYYY-MM-DD"
							placeholder="选择结束日期">
						</el-date-picker>
					</div>
				</el-form-item>
				<el-form-item>
					<el-button type="primary" icon="Search" @click="onSubmit">查询</el-button>
				</el-form-item>
			</el-form>
			<div class="mb16">
				<span>标签</span>
				<span class="pl10">
					<el-radio-group v-model="formInline.tagId" size="mini" @change="onSubmit">
						<el-radio-button label="0">全部</el-radio-button>
						<el-radio-button :label="item.tagId" v-for="(item, index) in allTag" :key="index"
							:value="item.tagId">
							{{item.tagName}}
						</el-radio-button>
					</el-radio-group>
				</span>
			</div>
		</div>
		<!--内容-->
		<div class="product-content">
			<div class="table-wrap">
				<el-table size="small" :data="tableData" border style="width: 100%" v-loading="loading">
					<el-table-column prop="userId" label="ID" width="80"></el-table-column>
					<el-table-column prop="nickname" label="昵称"></el-table-column>
					<el-table-column label="微信头像">
						<template #default="scope">
							<img :src="scope.row.avatarurl" :width="30" :height="30" />
						</template>
					</el-table-column>
					<el-table-column prop="gradeName" label="会员等级"></el-table-column>
					<el-table-column prop="points" label="积分"></el-table-column>
					<el-table-column prop="balance" label="余额"></el-table-column>
					<el-table-column prop="mobile" label="手机号"></el-table-column>
					<el-table-column prop="createTime" label="注册时间" width="140"></el-table-column>
					<el-table-column fixed="right" label="操作" width="220">
						<template #default="scope">
							<el-button @click="addClick(scope.row)" type="text" size="small"
								v-auth="'/user/user/recharge'">充值
							</el-button>
							<!-- <el-button @click="editClick(scope.row)" type="text" size="small" v-auth="'/user/user/grade'">等级 -->
							<el-button @click="editClick(scope.row)" type="text" size="small">等级
							</el-button>
							<el-button @click="tagClick(scope.row)" type="text" size="small"
								v-auth="'/user/user/delete'">标签
							</el-button>
							<!-- <el-button @click="editBasicClick(scope.row)" type="text" size="small" v-auth="'/user/user/delete'">编辑
              </el-button> -->
							<el-button @click="deleteClick(scope.row)" type="text" size="small"
								v-auth="'/user/user/delete'">删除
							</el-button>
						</template>
					</el-table-column>
				</el-table>
			</div>

			<!--分页-->
			<div class="pagination">
				<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" background
					:current-page="curPage" :page-size="pageSize" layout="total, prev, pager, next, jumper"
					:total="totalDataNumber"></el-pagination>
			</div>
		</div>

		<!--会员充值-->
		<Recharge v-if="open_add" :open_add="open_add" :form="userModel" :gradeList="gradeList"
			@closeDialog="closeDialogFunc($event, 'add')"></Recharge>
		<!--会员等级-->
		<Grade v-if="open_edit" :open_edit="open_edit" :form="userModel" :gradeList="gradeList"
			@closeDialog="closeDialogFunc($event, 'edit')"></Grade>
		<!--会员标签-->
		<Tag v-if="open_tag" :open_tag="open_tag" :form="userModel" @closeDialog="closeDialogFunc($event, 'tag')"></Tag>
		<!--会员标签-->
		<editUser v-if="open_basic" :open_basic="open_basic" :form="userModel"
			@closeDialog="closeDialogFunc($event, 'basic')"></editUser>
	</div>
</template>

<script>
	import UserApi from '@/api/user.js';
	import Grade from './dialog/Grade.vue';
	import Recharge from './dialog/Recharge.vue';
	import Tag from './dialog/Tag.vue';
	import editUser from './dialog/editUser.vue';
	export default {
		components: {
			/*编辑组件*/
			Grade,
			Recharge,
			Tag,
			editUser
		},
		data() {
			return {
				/*是否加载完成*/
				loading: true,
				/*列表数据*/
				tableData: [],
				/*一页多少条*/
				pageSize: 20,
				/*一共多少条数据*/
				totalDataNumber: 0,
				/*当前是第几页*/
				curPage: 1,
				/*横向表单数据模型*/
				formInline: {
					nickname: '',
					gradeId: '',
					tagId: 0,
				},
				/*是否打开添加弹窗*/
				open_add: false,
				/*是否打开编辑弹窗*/
				open_edit: false,
				/*是否打开编辑弹窗*/
				open_basic: false,
				/*当前编辑的对象*/
				userModel: {},
				/*等级*/
				gradeList: [],
				open_tag: false,
				/*所有标签*/
				allTag: [],
				pickerOptions: {
					disabledDate(time) {
						return time.getTime() < Date.now() - 8.64e7;
					},
				},
			};
		},
		created() {
			/*获取列表*/
			this.getTableList();
		},
		methods: {
			/*选择第几页*/
			handleCurrentChange(val) {
				let self = this;
				self.curPage = val;
				self.loading = true;
				self.getTableList();
			},

			/*每页多少条*/
			handleSizeChange(val) {
				this.curPage = 1;
				this.pageSize = val;
				this.getTableList();
			},

			/*获取列表*/
			getTableList() {
				let self = this;
				let Params = self.formInline;
				Params.pageIndex = self.curPage;
				Params.pageSize = self.pageSize;
				UserApi.userlist(Params, true)
					.then(res => {
						self.loading = false;
						self.tableData = res.data.userList.records;
						self.totalDataNumber = res.data.userList.total;
						self.gradeList = res.data.gradeList;
						self.allTag = res.data.tagList;
					})
					.catch(error => {
						self.loading = false;
					});
			},

			/*搜索查询*/
			onSubmit() {
				let self = this;
				self.loading = true;
				self.curPage = 1;
				self.getTableList();
			},

			/*打开添加*/
			addClick(item) {
				this.userModel = item;
				this.open_add = true;
			},

			/*打开编辑*/
			editClick(item) {
				this.userModel = item;
				this.open_edit = true;
			},

			/* 打开编辑基本信息 */
			editBasicClick(item) {
				this.userModel = item;
				this.open_basic = true;
			},

			tagClick(item) {
				this.userModel = item;
				this.open_tag = true;
			},

			/*关闭弹窗*/
			closeDialogFunc(e, f) {
				if (f == 'add') {
					this.open_add = e.openDialog;
					if (e && e.type == 'success') {
						this.getTableList();
					}
				}
				if (f == 'edit') {
					this.open_edit = e.openDialog;
					if (e && e.type == 'success') {
						this.getTableList();
					}
				}
				if (f == 'tag') {
					this.open_tag = e.openDialog;
					if (e && e.type == 'success') {
						this.getTableList();
					}
				}
				if (f == 'basic') {
					this.open_basic = e.openDialog;
					if (e && e.type == 'success') {
						this.getTableList();
					}
				}
			},

			/*删除用户*/
			deleteClick(row) {
				let self = this;
				ElMessageBox.confirm('此操作将永久删除该记录, 是否继续?', '提示', {
						confirmButtonText: '确定',
						cancelButtonText: '取消',
						type: 'warning'
					})
					.then(() => {
						self.loading = true;
						UserApi.deleteuser({
									userId: row.userId
								},
								true
							)
							.then(data => {
								self.loading = false;
								if (data.code == 1) {
									ElMessage({
										message: '恭喜你，用户删除成功',
										type: 'success'
									});
									self.getTableList();
								} else {
									self.loading = false;
								}
							})
							.catch(error => {
								self.loading = false;
							});
					})
					.catch(() => {
						self.loading = false;
					});
			}
		}
	};
</script>
<style></style>
